
import java.awt.Color;
import java.awt.Graphics;
import java.util.Random;
import javax.swing.JApplet;
import javax.swing.JPanel;

/*
 * To change this template, choose Tools | Templates and open the template in
 * the editor.
 */
/**
 *
 * @author f0899
 */
public class Tehtava5 extends JApplet implements Runnable {

    //alustetaan tarvittavat roinat
    private Random satunnainen = new Random();
    private Thread saie;
    private int x, y, op;

    @Override
    public void init() {
        //alustetaan säie ja hankitaan alustava koko x:lle ja y:lle sekä piirretään paneeli
        this.saie = null;
        x = getSize().width; //appletin leveys
        y = getSize().height / 2; //puolivälissä korkeudesta
        getContentPane().add(new PiirtoPaneeli());
    }

    public class PiirtoPaneeli extends JPanel {

        @Override
        public void paintComponent(Graphics g) {
            //piirretään ympyrä
            super.paintComponent(g);
            g.setColor(Color.red);
            g.fillOval(x, y, 20, 20);

            //arvotaan ympyrälle liikkumisnopeus
            y = y - (satunnainen.nextInt(5) * 1);
            x = x + (satunnainen.nextInt(5) * 5);


            //mikäli ympyrä menee jonkin reunan yli ammutaan toiselle puolelle
            if (x <= 20 * -1) {
                x = getSize().width; //appletin leveys
            }
            if (y <= 20 * -1) {
                y = getSize().height; //appletin korkeus
            }

            if (x >= 20 + getSize().width) {
                x = 0;
            }
            if (y >= 20 + getSize().height) {
                y = 0;
            }
        }
    }

    @Override
    public void start() {
        //säie pyörimään
        if (saie == null) {
            saie = new Thread(this);
            saie.start();
        }
    }

    @Override
    public void run() {
        //maalaa uudestaan ja odota 20ms
        while (true) {
            repaint();
            try {
                saie.sleep(20);
            } catch (InterruptedException e) {
            }
        }
    }
}
